| m ≤ # x0 + 1, ∀ m, σ. m ≤ # x0 → ⌜x0⌝ + σ to m = ⌜x0 to m⌝ ⊦ (⌜a '⌝ + ⌜x0⌝ ) + σ to m = ⌜a ' + x0 to m⌝ |
∀ x0, a, σ. m0 ≤ # x0 + 1 ∧ (∀ m, σ. m ≤ # x0 → ⌜x0⌝ + σ to m = ⌜x0 to m⌝ ) → (⌜a '⌝ + ⌜x0⌝ ) + σ to m0 = ⌜a ' + x0 to m0⌝ , m0 +1 ≤ # x0 + 1, ∀ m, σ. m ≤ # x0 → ⌜x0⌝ + σ to m = ⌜x0 to m⌝ ⊦ (⌜a '⌝ + ⌜x0⌝ ) + σ to m0 +1 = ⌜a ' + x0 to m0 +1⌝
Used simplifier rules: to-zero: ⊦ σ to 0 = [];%to-zero-l: ⊦ x to 0 = [];%empty: ⊦ ⌜[]⌝ = [];%nat freely generated by 0, +1;;