Tests for ModuleSyntax #
Instances For
@[reducible]
Equations
Instances For
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
Equations
Instances For
@[implicit_reducible]
Equations
- Experiment.instIsModuleTestModule = { moduleTypeRep := Experiment.TestModule.typeRep, isModule := ⋯ }
Instances For
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[implicit_reducible]
Equations
- Experiment.instIsModuleOneField = { moduleTypeRep := Experiment.OneField.typeRep, isModule := ⋯ }
Instances For
@[reducible]
Equations
Instances For
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
@[simp]
Instances For
noncomputable def
Experiment.UnicodeArrowField.g
[GaudisCrypt.ProgramSpec]
(m : UnicodeArrowField)
:
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Experiment.UnicodeArrowField.destruct_mk
[GaudisCrypt.ProgramSpec]
(m : UnicodeArrowField)
:
Instances For
@[implicit_reducible]
Equations
- Experiment.instIsModuleUnicodeArrowField = { moduleTypeRep := Experiment.UnicodeArrowField.typeRep, isModule := ⋯ }
@[reducible]
Equations
Instances For
noncomputable def
Experiment.UnicodeArrowField.f
[GaudisCrypt.ProgramSpec]
(m : UnicodeArrowField)
:
Equations
Instances For
Instances For
noncomputable def
Experiment.UnicodeArrowField.structure
[GaudisCrypt.ProgramSpec]
(m : UnicodeArrowField)
:
Instances For
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Experiment.myMod = Experiment.TestModule.mk { main := Experiment.testMain, aux := Experiment.testAux }
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible]
Equations
Instances For
Equations
Instances For
@[simp]
Instances For
Equations
Instances For
@[implicit_reducible]
Equations
- Experiment.instIsModuleM2 = { moduleTypeRep := Experiment.M2.typeRep, isModule := ⋯ }
@[simp]
@[simp]
theorem
Experiment.X.h.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}
@[simp]
@[simp]
theorem
Experiment.X.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : (GaudisCrypt.HoleSigs.empty.append (procsig () → Unit)).Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
call (args GaudisCrypt.HoleIndex.zero) ();
call (args GaudisCrypt.HoleIndex.zero) ();
call (GaudisCrypt.Module.procedure myMod.main) ("hello", 5);
return ()
}
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Experiment.X.h.procedure = proc () : Unit { skip; return () }
Instances For
@[simp]
theorem
Experiment.X.g.apply_simp
[GaudisCrypt.ProgramSpec]
(A : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
:
@[simp]
theorem
Experiment.X.apply_simp
[GaudisCrypt.ProgramSpec]
(A : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
(B : TestModule)
:
GaudisCrypt.Module.app X (GaudisCrypt.Module.pair A B) = M2.mk { g := GaudisCrypt.Module.app g A, h := h }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
@[simp]
theorem
Experiment.Y.g.apply_simp
[GaudisCrypt.ProgramSpec]
(A : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
(B : TestModule)
:
GaudisCrypt.Module.app (GaudisCrypt.Module.app g A) B = GaudisCrypt.Module.proc
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} =>
GaudisCrypt.HoleSigs.Instantiation.push
(fun {sig : GaudisCrypt.ProcedureSignature} =>
GaudisCrypt.HoleSigs.Instantiation.push
(fun {sig : GaudisCrypt.ProcedureSignature} => GaudisCrypt.HoleSigs.Instantiation.nil)
(GaudisCrypt.Module.procedure B.main))
(GaudisCrypt.Module.app A myMod).procedure)
Equations
- Experiment.Y.h.procedure = proc () : Unit { skip; return () }
Instances For
@[simp]
theorem
Experiment.Y.apply_simp
[GaudisCrypt.ProgramSpec]
(A : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
(B : TestModule)
:
GaudisCrypt.Module.app Y (GaudisCrypt.Module.pair A B) = M2.mk { g := GaudisCrypt.Module.app (GaudisCrypt.Module.app g A) B, h := h }
@[simp]
theorem
Experiment.Y.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : ((GaudisCrypt.HoleSigs.empty.append (procsig (String, ℕ) → Bool)).append (procsig () → Unit)).Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
call (args GaudisCrypt.HoleIndex.zero.succ) ("hi", 3);
call (args GaudisCrypt.HoleIndex.zero) ();
return ()
}
@[simp]
theorem
Experiment.Y.h.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}
@[simp]
Equations
Instances For
@[simp]
Instances For
@[simp]
theorem
Experiment.NoParams.h.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}
@[simp]
@[simp]
theorem
Experiment.NoParams.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}
Equations
- Experiment.NoParams.g.procedure = proc () : Unit { skip; return () }
Instances For
Equations
Instances For
Equations
- Experiment.NoParams.h.procedure = proc () : Unit { skip; return () }
Instances For
Instances For
@[simp]
Instances For
@[simp]
theorem
Experiment.EmptyParams.h.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}
Equations
- Experiment.EmptyParams.g.procedure = proc () : Unit { skip; return () }
Instances For
Instances For
@[simp]
theorem
Experiment.EmptyParams.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}
Equations
- Experiment.EmptyParams.h.procedure = proc () : Unit { skip; return () }
Instances For
@[simp]
@[simp]
theorem
Experiment.NoType.g.apply_simp
[GaudisCrypt.ProgramSpec]
(A : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
:
Instances For
Equations
- Experiment.NoType.h.procedure = proc () : Bool { skip; return true }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Experiment.NoType.h.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Bool {
skip;
return true
}
@[simp]
theorem
Experiment.NoType.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : (GaudisCrypt.HoleSigs.empty.append (procsig () → Unit)).Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
call (args GaudisCrypt.HoleIndex.zero) ();
return ()
}
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Experiment.Deep.g.apply_simp
[GaudisCrypt.ProgramSpec]
(A C : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
:
GaudisCrypt.Module.app (GaudisCrypt.Module.app g A) C = GaudisCrypt.Module.proc
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} =>
GaudisCrypt.HoleSigs.Instantiation.push
(fun {sig : GaudisCrypt.ProcedureSignature} =>
GaudisCrypt.HoleSigs.Instantiation.push
(fun {sig : GaudisCrypt.ProcedureSignature} => GaudisCrypt.HoleSigs.Instantiation.nil)
(GaudisCrypt.Module.app C myMod).procedure)
(GaudisCrypt.Module.app A myMod).procedure)
@[simp]
theorem
Experiment.Deep.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : ((GaudisCrypt.HoleSigs.empty.append (procsig () → Unit)).append (procsig () → Unit)).Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
call (args GaudisCrypt.HoleIndex.zero.succ) ();
call (args GaudisCrypt.HoleIndex.zero) ();
return ()
}
@[simp]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Experiment.Deep.h.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : (GaudisCrypt.HoleSigs.empty.append (procsig (String, ℕ) → Bool)).Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
call (args GaudisCrypt.HoleIndex.zero) ("hi", 3);
return ()
}
@[simp]
theorem
Experiment.Deep.apply_simp
[GaudisCrypt.ProgramSpec]
(A : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
(B : TestModule)
(C : GaudisCrypt.Module.Arr TestModule (procmod () → Unit))
:
GaudisCrypt.Module.app Deep (GaudisCrypt.Module.pair A (GaudisCrypt.Module.pair B C)) = M2.mk { g := GaudisCrypt.Module.app (GaudisCrypt.Module.app g A) C, h := GaudisCrypt.Module.app h B }
Equations
- Experiment.NoTypeNoParams.g.procedure = proc () : Unit { skip; return () }
Instances For
@[simp]
theorem
Experiment.NoTypeNoParams.g.procedure.apply_simp
[GaudisCrypt.ProgramSpec]
(args : GaudisCrypt.HoleSigs.empty.Instantiation)
:
(procedure.instantiate fun {sig : GaudisCrypt.ProcedureSignature} => args) = proc () : Unit {
skip;
return ()
}