| aP(a)(H1), aP0(a)(H1), ((aP0 ⊗_ s0))(H0), H1 ⊥ H0, ∀ a0, H0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(H0) → aP(a0)(H0), ∀ s1, aP0, H, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(H) ∧ (∀ a, H. a ∈ s1 ∧ aP0(a)(H) → aP(a)(H)) → ((aP ⊗_ s1))(H) ⊦ ((aP(a) * aP ⊗_ s0))(H1 ∪ H0), a ∈ s0, ((aP ⊗_ s0))(H0) |
aP(a)(H1), aP0(a)(H1), ((aP0 ⊗_ s0))(H0), H1 ⊥ H0, ∀ a0, H0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(H0) → aP(a0)(H0), ∀ s1, aP0, H, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(H) ∧ (∀ a, H. a ∈ s1 ∧ aP0(a)(H) → aP(a)(H)) → ((aP ⊗_ s1))(H) ⊦ ((aP(a) * aP ⊗_ s0))(H1 ∪ H0), a ∈ s0, ((aP ⊗_ s0))(H0), ((aP0 ⊗_ s0))(H0) ∧ (∀ a, H. a ∈ s0 ∧ aP0(a)(H) → aP(a)(H))
Used simplifier rules: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: s0, aP0, H0, aP