Abstract algebra: Take a group G, and a group H, with a group operation *. G is isomorphic to H if there exist a map f: G->H such that:
1: f is injective
2: f is surjective
3: f(a*b)=f(a)*f(b) for all a,b in G
If f satisfies these three properties, f is called an isomorphism.
The map f: Z -> E given by f(a)=2a where Z is the integers and E is the even integers is an isomorphism.
Proof:
Showing injectivity
f(b)=f(a) => 2a=2b (from the given function) <=> a=b
Showing surjectivity
Suppose n is in E. n is an even integer hence n=2k for some integer k.
f(k)=2k=n, hence f is surjective.
Homomorphism:
f(a+b)=2(a+b)=2a+2b=f(a)+f(b)
Hence f is an isomorphism. Q. E. D.
A JavaScript application which can be executed in both a browser and a non-browser runtime. This was the first term used to describe this concept, but "Universal JavaScript" now has wider acceptance. Mathematicians and functional programmers will scoff at you if you use "isomorphic" to describe JavaScript, so save face by using "universal" instead.
You aren't writing isomorphic JavaScript? Ha, you remind me of my old Java coworkers.
1👍 1👎