Dear all,
I am a bachelor's student and recently started familiarising myself with Tamarin.
Especially observational equivalence raised my interest.
A simple theory for exploring the limitations of this mode I came up with is the following:
theory DiffIndMin begin
rule Start:
[ Fr(~id), Fr(~a), Fr(~b) ]
--[ OnlyOnce(), Start(~id, ~a, ~b) ]->
[ L(~id, ~a, ~b) ]
rule Step:
[ L(~id, a, b) ]
--[ Step(~id, a, b) ]->
[ L(~id, a, b) ]
rule Stop:
[ L(~id, a, b) ]
--[ Stop(~id, a, b) ]->
[ Out(diff(a, b)) ]
restriction OnlyOnce:
"All #i #j. OnlyOnce() @ i & OnlyOnce() @ j ==> #i = #j"
end
I have also attached the file.
Obviously, observational equivalence should hold for this theory, but I surmise this is only provable using induction.
This seems obvious when looking at the following screenshot from interactive mode trying to prove the observational equivalence lemma:

I have looked into the paper introducing observational equivalence a bit, and in section "6. Related Work and Conclusion", it is mentioned that "We will also tackle protocols with loops, where proofs will likely require induction."
From this I conclude that indeed, induction is currently not at all supported for the observational equivalence mode.
And it is also not possible to use helper lemmas, right?
Therefore, this is impossible to prove, or am I mistaken?
Kind regards,
Henning