
theory Misfix

  type t

  function ([])   (a: t) (i: int) : int
  function ([<-]) (a: t) (i: int) (v: int) : t

  axiom a1 : forall a: t, i v: int. a[i <- v][i] = v
  axiom a2 : forall a: t, i j v: int. i<>j -> a[i <- v][j] = a[j]

  goal g1 : forall a: t, i j v: int. a[a[i] <- i][a[i]] = i

end
