Diğer uç nokta, aynı işlevi hesaplayan (veya benzer ortamlarda aynı gözlemlenebilir davranışı gösteren) iki programın eşdeğer olduğunu söylemektir. Ancak bunlar iyi değildir: ilkeliği kontrol eden tüm programlar aynı değildir. Sonuç üzerinde hiçbir etkisi olmayan bir kod satırı ekleyebiliriz ve yine de aynı programı düşünürüz.
Bu aşırı bir durum değildir: program denkliği gözlem kavramına göre tanımlanmalıdır .
PL araştırmasında en yaygın tanım bağlamsal eşdeğerliktir. Bağlamsal eşdeğerlikte fikir, programları daha büyük programların (bağlam) bileşenleri olarak kullanarak gözlemlememizdir. Dolayısıyla, iki program tüm bağlamlar için aynı son değeri hesaplarsa, eşit oldukları kanaatindedir. Bu tanım tüm olası program bağlamlarında nicelleştirildiğinden, doğrudan çalışmak zordur. Dolayısıyla PL'deki tipik bir araştırma programı, bağlamsal eşdeğerliği ima eden kompozisyonel muhakeme ilkelerini bulmaktır.
Ancak, bu tek olası gözlem nosyonu değildir. Örneğin, bir programın hafızasının, zamanının veya güç davranışının gözlemlenebilir olduğunu kolayca söyleyebiliriz. Bu durumda, daha az program eşdeğeri vardır, çünkü daha fazla programı ayırt edebiliyoruz (örneğin, mergesort artık çabuk sıralamadan ayırt edilebilir). Zamanlama kanalı saldırılarına karşı bağışık olmayan diller tasarlamak (veya söylemek) veya uzay sınırlı programlama dilleri tasarlamak istiyorsanız, bu yapmanız gereken bir şeydir.
Ayrıca, bir hesaplamanın bazı ara durumlarını gözlemlenebilir olarak yargılamayı seçebiliriz. Bu, her zaman eşzamanlı diller için, müdahale olasılığı nedeniyle olur. Ancak sıralı diller için bile bu görünümü almak isteyebilirsiniz --- örneğin, hiçbir hesaplamanın şifrelenmemiş verileri ana bellekte saklamamasını istiyorsanız, ana belleğe yazmayı gözlemlenebilir olarak kabul etmeniz gerekir.
Temel olarak, tek bir program denkliği kavramı yoktur; her zaman seçtiğiniz gözlem kavramına bağlıdır ve bu, aklınızdaki uygulamaya bağlıdır.