@@ -18,37 +18,27 @@ inductive Formula n_pred
1818
1919namespace Formula
2020
21- def fin_range (s e: Fin n) : List (Fin n) :=
22- if h : s < e then
23- s :: fin_range ⟨s.val + 1 , by omega⟩ e
24- else
25- List.nil
26- termination_by n - s
27-
28- def eval_aux (t: Trace) (phi: Formula t.n_pred) (i: Fin t.length): Bool :=
21+ def eval_aux (t: Trace) (phi: Formula t.n_pred) (i: Fin t.length): Prop :=
2922 match phi with
3023 | Var v neg => xor t.predicates[v][i] neg
3124 | Next psi => if h: i < t.length - 1 then
3225 eval_aux t psi ⟨i.val + 1 , by omega⟩
3326 else
34- false
27+ False
3528 | WeakNext psi => if h: i < t.length - 1 then
3629 eval_aux t psi ⟨i.val + 1 , by omega⟩
3730 else
38- true
39- | Globally psi => (List.finRange t.length).all (fun j => j < i || eval_aux t psi j)
40- | Finally psi => (List.finRange t.length).any (fun j => j >= i && eval_aux t psi j)
41- | Or psi1 psi2 => (eval_aux t psi1 i) || (eval_aux t psi2 i)
42- | And psi1 psi2 => (eval_aux t psi1 i) && (eval_aux t psi2 i)
43- | Until psi1 psi2 => (List.finRange t.length).any (
44- fun j =>
45- j >= i
46- && ((List.finRange t.length).all (fun k => k < i || k >= j || eval_aux t psi1 k))
47- && (eval_aux t psi2 j)
48- )
49-
50- -- def eval (t: Trace) (phi: Formula t.n_pred): Bool :=
51- -- eval_aux t phi ⟨0, by rfl⟩
31+ True
32+ | Globally psi => ∀ j, j ≥ i → eval_aux t psi j
33+ | Finally psi => ∃ j, j ≥ i ∧ eval_aux t psi j
34+ | Or psi1 psi2 => (eval_aux t psi1 i) ∨ (eval_aux t psi2 i)
35+ | And psi1 psi2 => (eval_aux t psi1 i) ∧ (eval_aux t psi2 i)
36+ | Until psi1 psi2 => ∃ j, j ≥ i ∧
37+ (eval_aux t psi2 j) ∧
38+ (∀ k, i ≤ k → k < j → eval_aux t psi1 k)
39+
40+ -- def eval (t: Trace) (phi: Formula t.n_pred) (h: t.length > 0): Bool :=
41+ -- eval_aux t phi ⟨0, h⟩
5242
5343
5444end Formula
0 commit comments