Switch FiniteMap Fin n -> L representation
This helps automatically derive lattice laws for it Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com> Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -77,12 +77,12 @@ theorem eval_mono (e : Expr) : Monotone (eval prog e) := by
|
||||
intro vs₁ vs₂ h
|
||||
simp only [eval]
|
||||
by_cases hk : k ∈ prog.vars
|
||||
· rw [dif_pos (FiniteMap.memKey_iff.mpr hk),
|
||||
dif_pos (FiniteMap.memKey_iff.mpr hk)]
|
||||
· rw [dif_pos (FiniteMap.MemKey_iff.mpr hk),
|
||||
dif_pos (FiniteMap.MemKey_iff.mpr hk)]
|
||||
exact FiniteMap.le_of_mem_mem prog.vars_nodup h
|
||||
(FiniteMap.locate _).2 (FiniteMap.locate _).2
|
||||
· rw [dif_neg (fun hm => hk (FiniteMap.memKey_iff.mp hm)),
|
||||
dif_neg (fun hm => hk (FiniteMap.memKey_iff.mp hm))]
|
||||
· rw [dif_neg (fun hm => hk (FiniteMap.MemKey_iff.mp hm)),
|
||||
dif_neg (fun hm => hk (FiniteMap.MemKey_iff.mp hm))]
|
||||
| num n =>
|
||||
intro vs₁ vs₂ _
|
||||
exact le_refl _
|
||||
|
||||
@@ -20,7 +20,7 @@ variable {L prog}
|
||||
omit [Lattice L] in
|
||||
theorem states_memKey (s : prog.State) (sv : StateVariables L prog) :
|
||||
FiniteMap.MemKey s sv :=
|
||||
FiniteMap.memKey_iff.mpr (prog.states_complete s)
|
||||
FiniteMap.MemKey_iff.mpr (prog.states_complete s)
|
||||
|
||||
def variablesAt (s : prog.State) (sv : StateVariables L prog) :
|
||||
VariableValues L prog :=
|
||||
|
||||
@@ -137,12 +137,12 @@ theorem eval_mono (e : Expr) : Monotone (eval prog e) := by
|
||||
intro vs₁ vs₂ h
|
||||
simp only [eval]
|
||||
by_cases hk : k ∈ prog.vars
|
||||
· rw [dif_pos (FiniteMap.memKey_iff.mpr hk),
|
||||
dif_pos (FiniteMap.memKey_iff.mpr hk)]
|
||||
· rw [dif_pos (FiniteMap.MemKey_iff.mpr hk),
|
||||
dif_pos (FiniteMap.MemKey_iff.mpr hk)]
|
||||
exact FiniteMap.le_of_mem_mem prog.vars_nodup h
|
||||
(FiniteMap.locate _).2 (FiniteMap.locate _).2
|
||||
· rw [dif_neg (fun hm => hk (FiniteMap.memKey_iff.mp hm)),
|
||||
dif_neg (fun hm => hk (FiniteMap.memKey_iff.mp hm))]
|
||||
· rw [dif_neg (fun hm => hk (FiniteMap.MemKey_iff.mp hm)),
|
||||
dif_neg (fun hm => hk (FiniteMap.MemKey_iff.mp hm))]
|
||||
| num n =>
|
||||
intro vs₁ vs₂ _
|
||||
cases n <;> exact le_refl _
|
||||
|
||||
Reference in New Issue
Block a user