Inną skrajnością jest stwierdzenie, że dwa programy są równoważne, jeśli obliczają tę samą funkcję (lub wykazują to samo obserwowalne zachowanie w podobnych środowiskach). Ale to nie jest dobre: nie wszystkie programy sprawdzające pierwotność są takie same. Możemy dodać wiersz kodu bez wpływu na wynik i nadal uważalibyśmy go za ten sam program.
Nie jest to ekstremalne: równoważność programu musi zostać zdefiniowana w odniesieniu do pojęcia obserwacji.
Najczęstszą definicją w badaniach PL jest równoważność kontekstowa. W kontekście kontekstowym chodzi o to, że obserwujemy programy, wykorzystując je jako elementy większych programów (kontekst). Więc jeśli dwa programy obliczają tę samą wartość końcową dla wszystkich kontekstów, wówczas są one oceniane jako równe. Ponieważ ta definicja określa ilościowo wszystkie możliwe konteksty programu, trudno jest z nią pracować bezpośrednio. Tak więc typowy program badawczy w PL polega na znalezieniu zasad wnioskowania kompozycyjnego, które implikują kontekstową równoważność.
Nie jest to jednak jedyne możliwe pojęcie obserwacji. Na przykład możemy łatwo powiedzieć, że pamięć, czas lub zachowanie programu są obserwowalne. W tym przypadku zachowuje się mniej odpowiedników programów, ponieważ możemy odróżnić więcej programów (np. Scalesort można teraz odróżnić od szybkiego sortowania). Jeśli chcesz (powiedzmy) zaprojektować języki odporne na ataki kanału czasowego lub zaprojektować języki programowania ograniczone do przestrzeni, to jest coś, co musisz zrobić.
Możemy również zdecydować o ocenieniu niektórych stanów pośrednich obliczeń jako możliwych do zaobserwowania. Dzieje się tak zawsze w przypadku jednoczesnych języków, ze względu na możliwość zakłóceń. Ale możesz chcieć wziąć ten widok nawet dla języków sekwencyjnych --- na przykład, jeśli chcesz się upewnić, że żadne obliczenia nie przechowują niezaszyfrowanych danych w pamięci głównej, musisz uznać zapisy w pamięci głównej za obserwowalne.
Zasadniczo nie ma jednego pojęcia równoważności programu; zawsze zależy od wybranej przez ciebie koncepcji obserwacji i zależy to od zastosowania, które masz na myśli.