Najpierw komentarz. Twoje pytanie zależy od tego, jak geometrycznie zamierzasz oznaczać słowo „metryczny”. Użycie ultrametrii w semantyce i analizie statycznej jest dość powszechne, ale ultrametryki mają raczej interpretację kombinatoryczną, a nie geometryczną. (Jest to wariant obserwacji, że teoria domen ma raczej kombinatoryczne niż geometryczne zastosowanie topologii).
Powiedziawszy to, dam ci przykład, jak to się dzieje w proofach programowych. Najpierw przypomnijmy sobie, że w proofie programowym chcemy pokazać, że obowiązuje formuła opisująca program. Ogólnie rzecz biorąc, ta formuła niekoniecznie musi być interpretowana za pomocą boolean, ale można ją wyciągnąć z elementów pewnej sieci wartości prawdy. Zatem prawdziwa formuła to tylko taka, która jest równa górze siatki.
Co więcej, przy określaniu programów samoreferencyjnych (na przykład programów, które szeroko wykorzystują kod samodopasowujący się) sprawy mogą być bardzo trudne. Zazwyczaj chcemy podać rekurencyjną specyfikację programu, ale może nie istnieć oczywista struktura indukcyjna, na której można zawiesić definicję. Aby rozwiązać ten problem, często pomocne jest wyposażenie sieci wartości prawdy w dodatkową strukturę metryczną. Następnie, jeśli możesz wykazać, że predykat, którego żądany punkt stały jest ściśle zwężający, możesz odwołać się do twierdzenia Banacha o punkcie stałym, aby stwierdzić, że żądany rekurencyjny predykat jest dobrze zdefiniowany.
Przypadek, który znam najbardziej, nazywa się „indeksowaniem kroków”. W tym ustawieniu bierzemy naszą siatkę wartości prawdy do zamkniętych w dół podzbiorów N , których elementy możemy luźno interpretować jako „długości sekwencji oceny, w których zachowuje się właściwość”. Spotkania i złączenia są jak zwykle skrzyżowaniami i związkami, a ponieważ sieć jest kompletna, możemy również zdefiniować implikację Heytinga. Kratę można również wyposażyć w ultrametryczny, pozwalając, aby odległość między dwoma elementami kratowymi wynosiła 2 - n , gdzie n jest najmniejszym elementem w jednym zestawie, ale nie drugim.ΩN2−nn
Następnie mapa skurczów Banacha mówi nam, że predykat skurczowy ma unikalny punkt stały. Intuicyjnie oznacza to, że jeśli możemy zdefiniować predykat, który obowiązuje dla n + 1 kroków, używając wersji, która zawiera dla n kroków, to w rzeczywistości mamy jednoznaczną definicję predykatu. Jeśli następnie pokażemy, że predykat jest równy ⊤ = N , to wiemy, że predykat zawsze zawiera program.p:Ω→Ωn+1n⊤=N