Skip to content

Commit 61c9e77

Browse files
committed
Add Circuit model and examples
1 parent 7ad4ebd commit 61c9e77

5 files changed

Lines changed: 45 additions & 43 deletions

File tree

Cslib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public import Cslib.AlgorithmsTheory.Lean.TimeM
99
public import Cslib.AlgorithmsTheory.LowerBounds.ComparisonSort
1010
public import Cslib.AlgorithmsTheory.Models.ListComparisonSearch
1111
public import Cslib.AlgorithmsTheory.Models.ListComparisonSort
12+
public import Cslib.AlgorithmsTheory.Models.NCCircuits
1213
public import Cslib.AlgorithmsTheory.QueryModel
1314
public import Cslib.Computability.Automata.Acceptors.Acceptor
1415
public import Cslib.Computability.Automata.Acceptors.OmegaAcceptor

Cslib/AlgorithmsTheory/Algorithms/SingletapeTMAlgorithms/Basics.lean

Whitespace-only changes.

Cslib/AlgorithmsTheory/Models/NCCircuits.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/-
22
Copyright (c) 2026 Shreyas Srinivas. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
4-
Authors: Shreyas Srinivas, Eric WIeser
4+
Authors: Shreyas Srinivas, Alex Meiburg
55
-/
66

77
module

CslibTests.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public import CslibTests.HasFresh
1111
public import CslibTests.ImportWithMathlib
1212
public import CslibTests.LTS
1313
public import CslibTests.LambdaCalculus
14+
public import CslibTests.QueryModel.CircuitExamples
1415
public import CslibTests.QueryModel.ProgExamples
1516
public import CslibTests.QueryModel.QueryExamples
1617
public import CslibTests.Reduction

CslibTests/QueryModel/CircuitExamples.lean

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public import Mathlib
1414
/-!
1515
# Examples of Progs for Circuits
1616
17-
This file contains examples and tests of circuits written in the Prog Model
17+
This file contains examples and tests of fan-in 2 circuits written in the Prog Model
1818
-/
1919
namespace CslibTests
2020

@@ -28,17 +28,17 @@ def exCircuit1 : Prog (Circuit Bool) Bool := do
2828
let w := mul 3 x y
2929
add 4 z w
3030

31-
/--
32-
info: true
33-
-/
34-
#guard_msgs in
35-
#eval exCircuit1.eval circModel
31+
-- /--
32+
-- info: true
33+
-- -/
34+
-- #guard_msgs in
35+
-- #eval exCircuit1.eval circModel
3636

37-
/--
38-
info: { depth := 2, size := 5 }
39-
-/
40-
#guard_msgs in
41-
#eval exCircuit1.time circModel
37+
-- /--
38+
-- info: { depth := 2, size := 5 }
39+
-- -/
40+
-- #guard_msgs in
41+
-- #eval exCircuit1.time circModel
4242

4343
open Circuit in
4444
def exCircuit2 : Prog (Circuit ℚ) ℚ := do
@@ -47,35 +47,35 @@ def exCircuit2 : Prog (Circuit ℚ) ℚ := do
4747
let z := add 2 x y
4848
mul 4 z z
4949

50-
/--
51-
info: 9
52-
-/
53-
#guard_msgs in
54-
#eval exCircuit2.eval circModel
50+
-- /--
51+
-- info: 9
52+
-- -/
53+
-- #guard_msgs in
54+
-- #eval exCircuit2.eval circModel
5555

56-
/--
57-
info: true
58-
-/
59-
#guard_msgs in
60-
#eval exCircuit2.time circModel == ⟨2,4
56+
-- /--
57+
-- info: true
58+
-- -/
59+
-- #guard_msgs in
60+
-- #eval exCircuit2.time circModel == ⟨2,4⟩
6161

6262
open Circuit in
6363
def exCircuit3 (x y : Circuit ℚ ℚ) : Prog (Circuit ℚ) ℚ := do
6464
let z := add 2 x y
6565
let w := mul 3 x y
6666
mul 4 z w
6767

68-
/--
69-
info: true
70-
-/
71-
#guard_msgs in
72-
#eval (exCircuit3 (.const 0 (1 : ℚ)) (.const 1 (21 : ℚ))).eval circModel == 462
68+
-- /--
69+
-- info: true
70+
-- -/
71+
-- #guard_msgs in
72+
-- #eval (exCircuit3 (.const 0 (1 : ℚ)) (.const 1 (21 : ℚ))).eval circModel == 462
7373

74-
/--
75-
info: true
76-
-/
77-
#guard_msgs in
78-
#eval (exCircuit3 (.const 0 (1 : ℚ)) (.const 1 (21 : ℚ))).time circModel == ⟨2,5
74+
-- /--
75+
-- info: true
76+
-- -/
77+
-- #guard_msgs in
78+
-- #eval (exCircuit3 (.const 0 (1 : ℚ)) (.const 1 (21 : ℚ))).time circModel == ⟨2,5⟩
7979

8080

8181
open Circuit in
@@ -90,17 +90,17 @@ def CircAnd (n : ℕ) (x : Fin n → Circuit Bool Bool) : Circuit Bool Bool :=
9090
def execCircAnd (x : Fin n → Circuit Bool Bool) : Prog (Circuit Bool) Bool := do
9191
CircAnd n x
9292

93-
/--
94-
info: true
95-
-/
96-
#guard_msgs in
97-
#eval (execCircAnd ![.const 0 true, .const 1 true, .const 2 true]).eval circModel == true
98-
99-
/--
100-
info: true
101-
-/
102-
#guard_msgs in
103-
#eval (execCircAnd ![.const 0 true, .const 1 true, .const 2 true]).time circModel == ⟨3,5
93+
-- /--
94+
-- info: true
95+
-- -/
96+
-- #guard_msgs in
97+
-- #eval (execCircAnd ![.const 0 true, .const 1 true, .const 2 true]).eval circModel == true
98+
99+
-- /--
100+
-- info: true
101+
-- -/
102+
-- #guard_msgs in
103+
-- #eval (execCircAnd ![.const 0 true, .const 1 true, .const 2 true]).time circModel == ⟨3,5⟩
104104

105105

106106
end CslibTests

0 commit comments

Comments
 (0)