| ∀ a. a ∈ s → precise(aP(a)), ∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0, ∀ s0, aP. # s0 < # s → (∀ a. a ∈ s0 → precise(aP(a))) → precise(aP ⊗_ s0) ⊦ # s = 0, precise(aP ⊗_ s) |
∀ a0. a0 = a ∨ a0 ∈ s0 → precise(aP(a0)), ∀ s1, aP. # s1 < #(s0 ++ a) → (∀ a. a ∈ s1 → precise(aP(a))) → precise(aP ⊗_ s1) ⊦ precise(aP(a) * aP ⊗_ s0), a ∈ s0
Used simplifier rules: Sep-ins: ⊦ ¬ a ∈ s → aP ⊗_ (s ++ a) = aP(a) * aP ⊗_ s;% ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≠ 0; (s)% ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; (s)